package Analizadores;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import Analizadores.Estructuras.TokenList;
import Analizadores.Utilidades.Errores;


public class Analizador {

        private AnalizadorLexico al;
        private AnalizadorSintactico as;
        private Errores error;
        public Analizador(FileInputStream input) throws IOException{
        		error = new Errores();
                al = new AnalizadorLexico(input,error);
                //llamamos a la funcion que genera la lista de tokens y rellena la clase error si fuera necesario
                al.parser();
                TokenList lista = al.getLista();
                as = new AnalizadorSintactico(lista,error); 
        }
       
        public void procesar() throws IOException{
               
                as.procesar();//ejecutamos el analizador semantico
        }
        //Obtenemos el nombre del fichero donde volcar el codigo generado por los analizadores
        // y lo guardamos en bytecode
        public void generarCodObjeto(String f) throws IOException, ClassNotFoundException{
        	
               
        	//TEXTO PLANO
        	FileWriter file = new FileWriter(f);
        	ArrayList<String> al = as.getCod();
        	for(int i = 0;i<al.size();i++)
        		file.write(al.get(i)+"\n");//quitar el \n para el bytecode

            file.close();
        	
        }
}

